//项目入口js

import Vue from 'vue'

// 导入app根组件
import app from './App.vue'

// 导入路由包
import VueRouter from 'vue-router'
Vue.use(VueRouter)

// 导入自己的router.js路由模块
import router from './router.js'

//导入vue-resource
import VueResource from 'vue-resource'
Vue.use(VueResource)
Vue.http.options.root = "http://www.liulongbin.top:3005/"
Vue.http.options.emulateJSON = true;


//按需导入mint-ui中的组件
// import {Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui'
// Vue.component(Header.name,Header)
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);
// Vue.component(Button.name, Button);
// Vue.use(Lazyload)

import MintUI from 'mint-ui'
Vue.use(MintUI)
import 'mint-ui/lib/style.css'


// 导入MUI样式
import './lib/mui/css/mui.css'
import './lib/mui/css/icons-extra.css'


// 导入缩略图组件
import preview from 'vue-preview'
Vue.use(preview)
import './css/golbal.css'

// 注册vuex
import Vuex from 'vuex'
Vue.use(Vuex)

//每次进入网站就把数据传入cart
var cart = JSON.parse(localStorage.getItem('cart') || '[]')

var store = new Vuex.Store({
    state: { //this.$store.state.xx
        //购物车中的商品数据，在数组中存储对象
        //{id:商品id,count:商品数量,price:商品价格，selected:商品选中状态}
        cart: cart,
    },
    mutations: { //this.$store.commit('方法名称')
        addTocart(state, goodslist) {
            //点击加入购物车，帮商品信息，存储到store中的cart上
            //如果有对应商品，只需更新商品数量，如果没有，则加入一个
            var flag = false; //假设在购物车中没有找到对应商品

            state.cart.some(item => {
                if (item.id == goodslist.id) {
                    item.count += parseInt(goodslist.count);
                    flag = true;
                    return true;
                }
            })
            if (!flag) {
                state.cart.push(goodslist)
            }

            //当更新cart后，放入到本地的localStorage中
            localStorage.setItem('cart', JSON.stringify(state.cart))
        },
        upataegoosdata(state, goodslist) {
            //修改了购物车中的数量
            state.cart.some(item => {
                if (item.id == goodslist.id) {
                    item.count = parseInt(goodslist.count)
                    return true
                }
            })
            //当更新cart后，放入到本地的localStorage中
            localStorage.setItem('cart', JSON.stringify(state.cart))
        },
        removeformcart(state, id) {
            // 根据id,从store的购物车中删除对应那条数据
            state.cart.some((item, i) => {
                if (item.id == id) {
                    state.cart.splice(i, 1)
                    return true
                }
            })
            //当更新cart后，放入到本地的localStorage中
            localStorage.setItem('cart', JSON.stringify(state.cart))
        },
        upataegoosselected(state, info) {
            state.cart.forEach(item => {
                if (item.id == info.id) {
                    item.selected = info.selected
                }
            })
            //当更新cart后，放入到本地的localStorage中
            localStorage.setItem('cart', JSON.stringify(state.cart))
        }
    },
    getters: { //this.$store.getters.属性名
        //相当于计算属性，也相当filters
        getAllcount(state) {
            var c = 0;
            state.cart.forEach(item => {
                c += item.count
            })
            return c;
        },
        getgoodscount(state) {
            var obj = {}
            state.cart.forEach(item => {
                obj[item.id] = item.count
            })
            return obj
        },
        getgoodsselected(state) {
            var obj = {}
            state.cart.forEach(item => {
                obj[item.id] = item.selected
            })
            return obj
        },
        getgoodsprice(state){
            var obj={
                count:0,//勾选数量
                total:0//总价
            }
            state.cart.forEach(item=>{
                if(item.selected){
                    obj.count+=item.count;
                    obj.total+=item.price*item.count
                }
            })
            return obj
        }
    }
})


//导入时间插件
import moment from 'moment'
//定义全局过滤器
Vue.filter('dataFormat', function (dataStr, pattern = "YYYY-MM-DD HH:mm:ss") {
    return moment(dataStr).format(pattern)
})

var vm = new Vue({
    el: "#app",
    data() {
        return {

        }
    },
    render: c => c(app),
    router,
    store, //挂载store
})